perm filename NILSSO.ME1[LET,JMC]1 blob
sn#075790 filedate 1973-12-01 generic text, type T, neo UTF8
Nils:
I just got a memo by Fuller, Gaschnig, and Gillogly called
"analysis of the alpha-beta pruning algorithm" from Carngegie-Mellon.
At first sight, there isn't much new in it, but anyway it led me to
look in your book where you discuss the history, somewhat
incorrectly. The history is complicated by the fact that those who
devised it didn't make much of it. Anyway here is what I know.
I first thought of it at the Dartmouth Summer Research
Project on Artificial Intelligence in 1956 when Bernstein proposed
his chess program. As you may know this program branched 7 ways at
each level according to priority criteria, but didn't use any form of
alpha-beta. I criticized it on the spot for this, but Bernstein was
not convinced. No formal specification of the algorithm was given at
that time. Later, when I worked on the chess routines that were later
taken over by Kotok, I had Paul Abrahams write a two move mate
program which (I believe) used alpha-beta. The term alpha-beta was
introduced by me when I wrote a LISP version. However, my LISP
program was more elaborate than simple alpha-beta in that it used an
optimistic and pessimistic evaluation of positions, and I never
realized that the simple version gave the same answer as full
minimax. This came out when I criticized a kalah program written for
the PDP-1 by Roland Silver, because it used full minimax. The fact
that alpha-beta gave the same result as minimax was discovered and
proved by Edwards and Hart.
The kalah program you refer to was written by Edwards at MIT
under my direction, and was only slightly modified by Richard Russell
at Stanford when I moved to Stanford. The Kotok chess program was
based on my routines and was written by Kotok, Niessen, and one other
as bachelor's thesis work supervised by me. As you say, it was only
slightly modified when taken to Stanford.
It was never clear to me whether the early Newell-Simon chess
programs contained alpha-beta or not. It certainly was not
disentangled by them from other features of chess programs. The
Russian use of alpha-beta was certainly independent, and the
algorithm was desribed in a paper by Brudno about 1963 a copy of
which I had but seem to have mislaid. I believe it was described
entirely abstractly rather than in connection with an actual game
program.
All the MIT uses of alpha-beta were based on the
understanding that the full advantage of the algorithm would be
obtained only in connection with a move-orderer that tried the most
likely moves first.
The main contribution of Richard Russell was to make a long
series of experiments with the kalah program that showed the effects
of different settings of the parameters and also the series of
computer runs that showed that the 3-in-a-pit game is a win for the
first player. This also showed the need for an "impatience
heuristic". Unfortunately, the limitations of the PDP-1 memory
prevented interesting extensions, and the results were never properly
written up.
The original alpha-beta formalization was approximately as
follows:
valmax[p,alpha,beta] ← if optimistic p ≤ alpha then alpha
else if pessimistic p > beta then beta
else if ter p then imval p
else valmaxlis[successors p,alpha,beta]
valmaxlis[u,alpha,beta] ← if null u then alpha
else [lambda x. if x ≤ alpha then valmaxlis[cdr u,alpha, beta]
else if x ≥ beta then beta
else valmaxlis[cdr u,x,beta]]
[valmin[car u,alpha,beta]]
with valmin and valminlis defined analogously. Edwards and Hart
removed the optimistic and pessimistic evaluations, and I suppose
they are correct in saying that Mike Levin proved the theorem
although I don't remember it.
The above LISP formulation was never used as an actual
program, because the programs for chess and kalah were done in
Fortran and PDP-1 assembly language respectively.
Well, I suppose this doesn't differ too much from what you
say in your book.